library(tidyverse)
-- Attaching packages --------------------------------------- tidyverse 1.2.1 --
v ggplot2 3.1.0       v purrr   0.3.1  
v tibble  2.0.1       v dplyr   0.8.0.1
v tidyr   0.8.3       v stringr 1.4.0  
v ggplot2 3.1.0       v forcats 0.4.0  
package 㤼㸱purrr㤼㸲 was built under R version 3.5.3-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
library(leaflet)
package 㤼㸱leaflet㤼㸲 was built under R version 3.5.3
hospitals <- read_csv("../data/hospital_list.csv")
Parsed with column specification:
cols(
  .default = col_character(),
  zip = col_double(),
  `Phone Number` = col_double(),
  score = col_double(),
  longitude = col_double(),
  latitude = col_double(),
  population = col_double(),
  poverty = col_double(),
  percent = col_double(),
  poverty_percent = col_double()
)
See spec(...) for full column specifications.
hospitals
set.seed(100)

hospital_sample <- state_hospitals %>%
  sample_frac(0.3)

hospital_sample
summary(model)

Call:
lm(formula = hospitals ~ population, data = hospital_sample)

Residuals:
     Min       1Q   Median       3Q      Max 
-10.5571  -0.2355  -0.0480   0.0686   8.3029 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 9.068e-01  3.764e-02   24.09   <2e-16 ***
population  7.854e-06  8.055e-08   97.52   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9844 on 737 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.9281,    Adjusted R-squared:  0.928 
F-statistic:  9509 on 1 and 737 DF,  p-value: < 2.2e-16
predictions <- predict(model, 
  newdata = state_hospitals, 
  interval = "prediction") %>%
  as_tibble() %>%
  mutate_all(round)

predictions

State map

leaflet() %>%
  addTiles() %>%
  addPolygons(data = state_shapes, weight = 0.5, color = prep_colors$color)
LS0tDQp0aXRsZTogIkFjY2VzcyB0byBjYXJlIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobGVhZmxldCkNCmBgYA0KDQpgYGB7cn0NCmhvc3BpdGFscyA8LSByZWFkX2NzdigiLi4vZGF0YS9ob3NwaXRhbF9saXN0LmNzdiIpDQpob3NwaXRhbHMNCmBgYA0KDQpgYGB7cn0NCmhvc3BpdGFsX2xpc3QgPC0gaG9zcGl0YWxzICAlPiUNCiAgc2VsZWN0KHN0YXRlLCBsb25naXR1ZGUsIGxhdGl0dWRlKQ0Kd3JpdGVfcmRzKGhvc3BpdGFsX2xpc3QsICIuLi9kYXRhL2hvc3BpdGFsX2xpc3QucmRzIikNCmhvc3BpdGFsX2xpc3QNCmBgYA0KDQoNCmBgYHtyfQ0Kc3RhdGVfaG9zcGl0YWxzIDwtIGhvc3BpdGFscyAlPiUNCiAgbXV0YXRlKGNvdW50eSA9IHN0cl90b19sb3dlcihjb3VudHkpKSAlPiUNCiAgZ3JvdXBfYnkoc3RhdGUsIGNvdW50eSkgJT4lDQogIHN1bW1hcmlzZShwb3B1bGF0aW9uID0gbWF4KHBvcHVsYXRpb24pLCBob3NwaXRhbHMgPSBuKCkpDQp3cml0ZV9yZHMoc3RhdGVfaG9zcGl0YWxzLCAiLi4vZGF0YS9zdGF0ZV9ob3NwaXRhbHMucmRzIikNCnN0YXRlX2hvc3BpdGFscw0KYGBgDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTAwKQ0KDQpob3NwaXRhbF9zYW1wbGUgPC0gc3RhdGVfaG9zcGl0YWxzICU+JQ0KICBzYW1wbGVfZnJhYygwLjMpDQoNCmhvc3BpdGFsX3NhbXBsZQ0KYGBgDQoNCmBgYHtyfQ0KbW9kZWwgPC0gbG0oaG9zcGl0YWxzIH4gcG9wdWxhdGlvbiwgZGF0YSA9IGhvc3BpdGFsX3NhbXBsZSkNCndyaXRlX3Jkcyhtb2RlbCwgIi4uL2RhdGEvbW9kZWwucmRzIikNCnN1bW1hcnkobW9kZWwpDQpgYGANCg0KYGBge3J9DQpwcmVkaWN0aW9ucyA8LSBwcmVkaWN0KG1vZGVsLCANCiAgbmV3ZGF0YSA9IHN0YXRlX2hvc3BpdGFscywgDQogIGludGVydmFsID0gInByZWRpY3Rpb24iKSAlPiUNCiAgYXNfdGliYmxlKCkgJT4lDQogIG11dGF0ZV9hbGwocm91bmQpDQoNCnByZWRpY3Rpb25zDQpgYGANCg0KYGBge3J9DQpob3NwaXRhbF9yZXN1bHRzIDwtIHN0YXRlX2hvc3BpdGFscyAlPiUNCiAgYmluZF9jb2xzKHByZWRpY3Rpb25zKSAlPiUNCiAgbXV0YXRlKHJlc3VsdCA9IGNhc2Vfd2hlbigNCiAgICBob3NwaXRhbHMgPCBsd3IgfiAtMSwNCiAgICBob3NwaXRhbHMgPiB1cHIgfiAxLA0KICAgIFRSVUUgfiAwKSkNCg0Kd3JpdGVfcmRzKGhvc3BpdGFsX3Jlc3VsdHMsICIuLi9kYXRhL2hvc3BpdGFscy5yZHMiKQ0KDQpob3NwaXRhbF9yZXN1bHRzDQpgYGANCg0KIyMgU3RhdGUgbWFwDQoNCmBgYHtyfQ0Kc3RhdGVfbmFtZSA8LSAiQ0EiDQpzdGF0ZV9zaGFwZXMgPC0gcmVhZF9yZHMocGFzdGUwKCIuLi9zaGFwZXMvIiwgc3RhdGVfbmFtZSwiLnJkcyIpKQ0KDQpzdGF0ZV9kYXRhIDwtIGhvc3BpdGFsX3Jlc3VsdHMgJT4lDQogIGZpbHRlcihzdGF0ZSA9PSBzdGF0ZV9uYW1lKQ0KDQpzdGF0ZV9jb3VudGllcyA8LSBzdGF0ZV9zaGFwZXMgJT4lDQogIGFzX3RpYmJsZSgpICU+JQ0KICByZW5hbWVfYWxsKHN0cl90b19sb3dlcikgJT4lDQogIG11dGF0ZSgNCiAgICBjb3VudHkgPSBzdHJfdG9fbG93ZXIobmFtZSksDQogICAgY291bnR5ID0gc3RyX3JlcGxhY2VfYWxsKGNvdW50eSwgInN0LiAiLCAic2FpbnQiKQ0KICAgICkgJT4lDQogIHNlbGVjdChjb3VudHkpICU+JQ0KICByb3dpZF90b19jb2x1bW4oKQ0KDQpwcmVwX2NvbG9ycyA8LSBzdGF0ZV9kYXRhICU+JQ0KICBsZWZ0X2pvaW4oc3RhdGVfY291bnRpZXMsIGJ5ID0gImNvdW50eSIpICU+JQ0KICBhcnJhbmdlKHJvd2lkKSAlPiUNCiAgbXV0YXRlKGNvbG9yID0gY2FzZV93aGVuKA0KICAgIHJlc3VsdCA9PSAwIH4gImdyZWVuIiwNCiAgICByZXN1bHQgPT0gMSB+ICJibHVlIiwNCiAgICByZXN1bHQgPT0gLTEgfiAicmVkIg0KICApKQ0KDQpzdGF0ZV9kYXRhDQpgYGANCg0KDQpgYGB7cn0NCmxlYWZsZXQoKSAlPiUNCiAgYWRkVGlsZXMoKSAlPiUNCiAgYWRkUG9seWdvbnMoZGF0YSA9IHN0YXRlX3NoYXBlcywgd2VpZ2h0ID0gMC41LCBjb2xvciA9IHByZXBfY29sb3JzJGNvbG9yKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K